python按索引合并两个(或多个)DataFrame

您所在的位置:网站首页 pandas dataframe merge 性能 python按索引合并两个(或多个)DataFrame

python按索引合并两个(或多个)DataFrame

2023-08-14 19:45| 来源: 网络整理| 查看: 265

目录 1. merge2.1 merge2.2 merge 介绍 2. 拼接多个dataframe

1. merge 2.1 merge

当合并两个 DataFrames 的索引时,merge() 函数的 left_index 和 right_index 参数的值应该是 True。下面的代码示例将合并两个 DataFrames,加入类型为 inner。

import pandas as pd import numpy as np df1 = pd.DataFrame(['a','b','d','e','h'],index = [1,2,4,5,7], columns = ['C1']) df2 = pd.DataFrame(['AA','BB','CC','EE','FF'],index = [1,2,3,5,6], columns = ['C2']) df_inner = df1.merge(df2, how='inner', left_index=True, right_index=True) print(df_inner)

输出

C1 C2 1 a AA 2 b BB 5 e EE

df1 = pd.DataFrame({'C0':['a','b','d','e','h'], 'C1': ['a2','b2','d2','e2','h2']},index = [1,2,4,5,7]) df2 = pd.DataFrame(['AA','BB','CC','EE','FF'],index = [1,2,3,5,6], columns = ['C2']) df_inner = df1[['C1']].merge(df2, how='inner', left_index=True, right_index=True) print(df_inner)

输出

C1 C2 1 a2 AA 2 b2 BB 5 e2 EE 2.2 merge 介绍

pandas的merge函数可以通过指定多个条件来进行合并操作。可以使用列表或元组来指定多个列作为合并的条件,例如:

merged_df = pd.merge(df1, df2, on=['col1', 'col2'])

这将使用df1和df2中的’col1’和’col2’列作为合并的条件。如果需要指定不同的列名,则可以使用left_on和right_on参数来指定左右两个数据框中的列名,例如:

merged_df = pd.merge(df1, df2, left_on=['col1', 'col2'], right_on=['col3', 'col4'])

这将使用df1中的’col1’和’col2’列和df2中的’col3’和’col4’列作为合并的条件。

另一种方案是使用pd.merge函数,并传入left_on和right_on参数来指定不同Dataframe中所需匹配的列。以df1和df2有col1和col2两列需匹配为例,代码如下:

pd.merge(df1, df2, left_on=['col1', 'col2'], right_on=['col1', 'col2'])

当然,也可以使用这种方式对多列进行合并:

pd.merge(df1, df2, left_on=['col1', 'col2', 'col3'], right_on=['col1', 'col2', 'col4'])

同时,也可以通过传入一个字典作为on参数来合并多个条件,示例代码如下:

import pandas as pd # 创建两个DataFrame df1 = pd.DataFrame({ 'key1': ['A', 'B', 'C', 'D'], 'key2': ['X', 'Y', 'Z', 'X'], 'value': [1, 2, 3, 4] }) df2 = pd.DataFrame({ 'key3': ['B', 'D', 'E'], 'key4': ['Y', 'X', 'W'], 'value': [5, 6, 7] }) # 定义用于合并的字典 merge_on = { 'key1': 'key3', 'key2': 'key4' } # 将df1和df2按照merge_on字典中定义的条件进行合并 result = pd.merge(df1, df2, left_on=list(merge_on.keys()), right_on=list(merge_on.values())) print(result)

以上代码将df1和df2按照merge_on字典中定义的key1和key2列进行合并,得到的结果如下:

key1 key2 value_x key3 key4 value_y 0 B Y 2 B Y 5 1 D X 4 D X 6 2. 拼接多个dataframe # data_files 文件列表 df = (pd.read_table(f, sep=',', encoding='utf-8', error_bad_lines=False, skiprows=[0, 2, 3]) for f in tqdm(data_files)) dat_df = pd.concat(df) # 上面两行可以合并 df = pd.concat(pd.read_table(f, sep=',', encoding='utf-8', error_bad_lines=False, skiprows=[0,2,3]) for f in tqdm(data_files)) error_bad_lines=False # 跳过出错的行,超出header字段的行(默认情况下,字段过多的行(例如,逗号过多的 csv 行)会引发异常,并且不会返回任何 DataFrame。 如果为 False,那么这些“坏行”将从返回的 DataFrame 中删除,然后返回正常的这部分数据。)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3